package mpo;

import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import static java.awt.print.Printable.NO_SUCH_PAGE;
import static java.awt.print.Printable.PAGE_EXISTS;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;

public class Drukowanie {
    private static Pracownik pracownik;
    private static Klient klient;
    
    public static boolean druk(Pracownik p) {
        pracownik = p;
        PrinterJob printer = PrinterJob.getPrinterJob();
        printer.setPrintable((Printable) new PracownikToPrint());

        if (printer.printDialog()) {
            try {
                printer.print();
            } catch (PrinterException ex) {
                System.err.println("Wystapil błąd!");
                return false;
            }
            return true;
        }
        return false;
    }
    
    public static boolean druk(Klient k) {
        klient = k;
        PrinterJob printer = PrinterJob.getPrinterJob();
        printer.setPrintable((Printable) new KlientToPrint());

        if (printer.printDialog()) {
            try {
                printer.print();
            } catch (PrinterException ex) {
                System.err.println("Wystapil błąd!");
                return false;
            }
            return true;
        }
        return false;
    }

    
    
    private static class PracownikToPrint implements Printable {      
         @Override
        public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
            int pozY = (int)pageFormat.getImageableY()+ 20 ;
            int pozX = (int)pageFormat.getImageableX();
            graphics.drawString(">>Karta pracownika", pozX, pozY);
            pozY+=30;
            graphics.drawString("Imie: " + pracownik.getImie(), pozX, pozY);
            pozY+=30;
            graphics.drawString("Nazwisko: " + pracownik.getNazwisko(),pozX, pozY);
            pozY+=30;
            graphics.drawString("Pesel: " + pracownik.getPesel(),pozX, pozY);
            pozY+=30;
            graphics.drawString("Nip: " + pracownik.getNIP(),pozX, pozY);
            pozY+=30;
            graphics.drawString("Adres: " + pracownik.getAdres(),pozX, pozY);
            pozY+=30;
            graphics.drawString("Telefon: " + pracownik.getTelefon(),pozX, pozY);
            pozY+=30;
            graphics.drawString("Koniec umowy: " + pracownik.getDataWygasnieciaUmowyViaString() ,pozX, pozY);
            pozY+=30;
            graphics.drawString("Zespól: " + pracownik.getIdZespol(),pozX, pozY);
            pozY+=30;
            graphics.drawString("Zlecenie: " + pracownik.getIdZlecenia(),pozX, pozY);
            
            return (pageIndex == 0 ? PAGE_EXISTS : NO_SUCH_PAGE);
        }
    }
    
    private static class KlientToPrint implements Printable {
         @Override
        public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
            int pozY = (int)pageFormat.getImageableY()+ 20 ;
            int pozX = (int)pageFormat.getImageableX();
            graphics.drawString(">> Karta klienta id: " + klient.getId(), pozX, pozY);
            pozY+=30;
            if(klient.getImie()!=null){
                graphics.drawString("Imie: " + klient.getImie(), pozX, pozY);
                pozY+=30;
            }
            if(klient.getNazwisko()!=null){
                graphics.drawString("Nazwisko: " + klient.getNazwisko(),pozX, pozY);
                pozY+=30;
            }
            if(klient.getNazwa()!=null){
                graphics.drawString("Nazwa: " + klient.getNazwa(),pozX, pozY);
                pozY+=30;
            }
            graphics.drawString("Telefon: " + klient.getTelefon() ,pozX, pozY);
            pozY+=30;
            
            graphics.drawString("Adres: " + klient.getMiasto(),pozX, pozY);
            pozY+=30;
            
            graphics.drawString("Typ: " + klient.getTypKlienta(),pozX, pozY);
            pozY+=30;
            
            return (pageIndex == 0 ? PAGE_EXISTS : NO_SUCH_PAGE);
        }
    }
}
